package me.oz.test.util;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.util.ArrayList;
import sun.rmi.runtime.Log;

/**
 * @author oz
 * @version 1.0
 * @name GsonUtils
 * @package me.oz.test.util
 * @time 13/03/18 22:35
 * @email 857527916@qq.com
 * @describe 基于Gson的一个工具类
 */
public final class GsonUtils {

    private GsonUtils() {
        throw new UnsupportedOperationException("can't be instantiated");
    }

    /**
     * 将一个对象转换为JSON格式的串
     *
     * @param object 任意对象
     * @return JSON格式的字符串
     */
    public static String convertVO2String(Object object) {

        try {
            Gson gson = new Gson();
            return gson.toJson(object);
        } catch (Exception e) {
            return null;
        }
    }

    /**
     * 将一个JSON格式的字符串转换为Java对象
     *
     * @param jsonStr 要转换的JSON格式的字符串
     * @param targetClass 要将这个JSON格式的字符串转换为什么类型的对象
     * @return 转换之后的Java对象
     */
    public static <T> T convertString2Object(String jsonStr, Class<T> targetClass) {

        Gson gson = new Gson();

        return gson.fromJson(jsonStr, targetClass);

    }

    /**
     *
     *
     * @param jsonStr 要转换的JSON格式的字符串
     * @param typeToken TypeToken<这里指定集合类型和泛型信息>
     * @return
     */
    public static <T> T convertString2Collection(String jsonStr, TypeToken<T> typeToken) {

        Gson gson = new Gson();

        T t = gson.fromJson(jsonStr, typeToken.getType());
        
        return t;

    }

}
